Many modern computing systems are designed to offer tremendous flexibility to the users of the computing systems. This flexibility allows users to scale, configure, or otherwise adjust the computing system to fit the requirements of each individual user. Computing system vendors facilitate such flexibility using various configuration techniques. For example, computing system vendors can provide libraries of application programming interfaces (APIs) that users can use to perform various configuration operations at the computing system. The configuration operations are used to accomplish some purpose and/or to achieve some target state pertaining to the computing resources of the computing system. In highly active computing systems, with a changing mix of users and resources, configuration operations can be issued at a high rate from numerous sources (e.g., administrators, computing processes, etc.).
Unfortunately, configuration operations that are performed in highly active computing systems can sometimes fail to achieve their expected target resource configuration states (e.g., fail to achieve an expected “Success” status). In some cases, failure to achieve an expected state can arise due to system problems. In other cases, failure to achieve an expected state can arise due to multiple sets of instructions being processed over the same resource. For example, two different sets of configuration operations invoked by two different system administrators may specify two different target resource states for the same resource, and those two different target resource states might be in conflict. More specifically, one administrator might specify a memory size of 2 GB for a virtual machine (VM) while, at some slightly later time, the same or other administrator might specify a memory size of 1 GB for the same virtual machine. In this case, there is a conflict between the initially-specified “memory size of 2 GB” and the later-specified “memory size of 1 GB”. As such, unless the conflict is recognized and remediated, the “true” intended state may not be achieved. In other situations, a resource state that was earlier achieved may no longer be “true” due to, for example, a manual override by a user. In still other cases, configuration operations corresponding to a certain intended state issued under a first set of system conditions may not achieve the intended state due to any of a variety of then-current system problems.
What is needed is a technique to achieve and maintain specified resource states in the face of rapidly changing characteristics of the underlying computing system and/or its environment.